package controller

import (
	"github.com/gin-gonic/gin"
	"net/http"
	"os"
	"strings"
	"web-tools-go/define"
)

type fileList struct {
	Name    string `json:"name"`     // 文件名
	Ext     string `json:"ext"`      // 文件拓展
	Path    string `json:"path"`     // 文件相对路径
	PrePath string `json:"pre_path"` // 上一级路径
}

func FileListPage(c *gin.Context) {
	c.HTML(http.StatusOK, "file-list.html", gin.H{})
}

// FileList 获取静态资源文件夹的列表
func FileList(c *gin.Context) {
	p := c.PostForm("path")
	dirs, err := os.ReadDir(define.StaticPath + p)
	if err != nil {
		c.JSON(http.StatusOK, gin.H{
			"code": -1,
			"msg":  "Get Dir Error:" + err.Error(),
		})
		return
	}
	list := make([]*fileList, 0)
	for _, dir := range dirs {
		data := &fileList{
			Name: dir.Name(),
		}
		if dir.IsDir() {
			data.Ext = "dir"
			data.Path = p + dir.Name() + "/"
		} else {
			t := strings.Split(dir.Name(), ".")
			data.Ext = t[len(t)-1]
			data.Path = p + dir.Name()
		}
		list = append(list, data)
	}
	// 上一页处理位置处理
	preIndex := 1
	for i := len(p) - 2; i > 0; i-- {
		if string(p[i]) == "/" {
			preIndex = i + 1
			break
		}
	}
	c.JSON(http.StatusOK, gin.H{
		"code":    1,
		"msg":     list,
		"prePath": p[0:preIndex],
	})
}
